package scau.hotel.hotel_service.validator;

import scau.hotel.hotel_service.validator.impl.IsIDCardValidator;

/**
 * 第一代身份证校验：
 * [1-9]\d{5}：前六位地区，非0开头
 * \d{2} ：出生年份后两位00-99
 * ((0[1-9])|(10|11|12))：月份，01-12月
 * (([0-2][1-9])|10|20|30|31)：日期，01-31天
 * \d{3}：顺序码三位，没有校验码
 *
 * 第二代身份证校验：
 * [1-9]\d{5} ：前六位地区，非0开头
 * (18|19|([23]\d))\d{2}：出身年份，覆盖范围为 1800-3999 年
 * ((0[1-9])|(10|11|12))：月份，01-12月
 * (([0-2][1-9])|10|20|30|31)：日期，01-31天
 * \d{3}[0-9Xx]：顺序码三位 + 一位校验码
 */
@java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.ANNOTATION_TYPE, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
@javax.validation.Constraint(validatedBy = {IsIDCardValidator.class})
public @interface IsIDCard {

    boolean required() default true;

    java.lang.String message() default "请输入15位第一代身份证或18位第二代身份证";

    java.lang.Class<?>[] groups() default {};

    java.lang.Class<? extends javax.validation.Payload>[] payload() default {};
}
